﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using LHS.Core.TableInfo;
using System.IO;

namespace LHS.Win
{
    public partial class frmThemNhanVien : Form
    {
        LHS.Core.Authority.AuthorityController objController = new LHS.Core.Authority.AuthorityController();
        private Bitmap MyImage;
        // Methods
        public frmThemNhanVien()
        {
            this.InitializeComponent();
        }

        private void btThem_Click(object sender, EventArgs e)
        {
            if (this.checkData())
            {
                if ((this.tbPhone.Text.Length > 0) && !this.IsNumber(this.tbPhone.Text.ToString()))
                {
                    MessageBox.Show("Số điện thoại không hợp lệ", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
                else if ((this.tbDiDong.Text.Length > 0) && !this.IsNumber(this.tbDiDong.Text.ToString()))
                {
                    MessageBox.Show("Số điện thoại di động không hợp lệ", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
                else if ((this.tbEmail.Text.Length > 0) && !Regex.IsMatch(this.tbEmail.Text, @"^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$"))
                {
                    MessageBox.Show("Địa chỉ E-Mail không hợp lệ!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
                else
                {
                    string str;
                    string str2;
                    string str3;
                    if (this.tbDiDong.Text == "")
                    {
                        str2 = "0";
                    }
                    else
                    {
                        str2 = this.tbDiDong.Text.ToString();
                    }
                    if (this.tbEmail.Text == "")
                    {
                        str3 = "";
                    }
                    else
                    {
                        str3 = this.tbEmail.Text.ToString();
                    }
                    if (this.rbMale.Checked)
                    {
                        str = "Nam";
                    }
                    else
                    {
                        str = "Nữ";
                    }
                    try
                    {
                        this.LoadID();
                        
                        ///thumbnail chữ ký rồi lưu vào image vào DB
                        ///edit by thaoht 20090603
                        Image.GetThumbnailImageAbort abort = new Image.GetThumbnailImageAbort(this.ThumbnailCallback);
                        Image img = picSignature.Image.GetThumbnailImage(133, 50, abort, System.IntPtr.Zero);
                        MemoryStream stream = new MemoryStream();
                        img.Save(stream, this.picSignature.Image.RawFormat);
                        byte[] buffer = stream.GetBuffer();
                        stream.Close();
                        //end edit phan them moi

                        DataTable dtEmployee = InfoEmployees.GetStructure();
                        DataRow dr = dtEmployee.NewRow();
                        dr[InfoEmployees.EMPID] = this.tbID.Text;
                        dr[InfoEmployees.EMPNAME] = this.tbFullName.Text;
                        dr[InfoEmployees.EMPBIRTHDATE] = this.dtpBirthDay.Value;
                        dr[InfoEmployees.EMPAGE] = this.tbAge.Text;
                        dr[InfoEmployees.EMPSEX] = str;
                        dr[InfoEmployees.EMPPOSITION] = this.cbChucVu.Text;
                        dr[InfoEmployees.EMPSPECIALIZE] = this.tbChuyenMon.Text;
                        dr[InfoEmployees.EMPADDRESS] = this.tbAddress.Text;
                        dr[InfoEmployees.EMPTEL] = this.tbPhone.Text;
                        dr[InfoEmployees.EMPMOBILE] = str2;
                        dr[InfoEmployees.EMPEMAIL] = str3;
                        dr[InfoEmployees.EMPSIGNATUREIMAGE] = buffer; //phan them moi 20090603
                        dtEmployee.Rows.Add(dr);
                        objController.InsertRow(dr, new string[] { InfoEmployees.EMPISN });

                        this.frmThemNhanVien_Load(sender, e);
                        MessageBox.Show("Thêm mới thành công!", "Thêm mới thành công!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.tbFullName.Text = "";
                        this.tbAge.Text = "";
                        this.tbChuyenMon.Text = "";
                        this.tbAddress.Text = "";
                        this.tbPhone.Text = "";
                        this.tbDiDong.Text = "";
                        this.tbEmail.Text = "";
                        this.picSignature.Image = null; //edit by thaoht 20090603
                        this.cbChucVu.SelectedIndex = 0;
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(exception.Message);
                    }
                }
            }
        }

        private void btThoat_Click(object sender, EventArgs e)
        {
            base.Close();
        }

        private bool checkData()
        {
            if (this.tbFullName.Text == "")
            {
                MessageBox.Show("Vui lòng nhập tên nhân viên!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            if (this.tbAge.Text == "")
            {
                MessageBox.Show("Vui lòng nhập ngày sinh!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            if (Convert.ToInt64(this.tbAge.Text.ToString()) < 0L)
            {
                MessageBox.Show("Ngày sinh không hợp lệ!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            if (this.cbChucVu.Text == "")
            {
                MessageBox.Show("Vui lòng chọn chức vụ!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            if (this.tbChuyenMon.Text == "")
            {
                MessageBox.Show("Vui lòng nhập chuyên môn!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            if (this.tbAddress.Text == "")
            {
                MessageBox.Show("Vui lòng nhập địa chỉ!", "Lỗi nhập", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return false;
            }
            return true;
        }

        private void dtpBirthDay_Leave(object sender, EventArgs e)
        {
            this.tbAge.Text = (Convert.ToInt32(DateTime.Now.Year) - Convert.ToInt32(dtpBirthDay.Value.Year)).ToString();
        }

        private void frmThemNhanVien_Load(object sender, EventArgs e)
        {
            this.LoadID();
        }

        private bool IsNumber(string Number)
        {
            try
            {
                long.Parse(Number);
                return true;
            }
            catch
            {
                return false;
            }
        }

        private void LoadID()
        {
            DataTable dt = objController.GetData(InfoEmployees.TABLENAME);

            if (dt == null || dt.Rows.Count == 0)
            {
                this.tbID.Text = "NV001";
            }
            else
            {
                string str = Convert.ToString((int)(Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][1].ToString().Replace("NV", "").ToString()) + 1));
                if ((Convert.ToInt32(str) > 0) && (Convert.ToInt32(str) <= 9))
                {
                    str = "00" + str;
                }
                else if ((Convert.ToInt32(str) > 9) && (Convert.ToInt32(str) <= 0x63))
                {
                    str = "0" + str;
                }
                str = "NV" + str;
                this.tbID.Text = str;
            }

        }

        private void tbDiDong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar) && (e.KeyChar != '\b'))
            {
                e.Handled = true;
            }
        }

        private void tbPhone_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar) && (e.KeyChar != '\b'))
            {
                e.Handled = true;
            }
        }

        #region Signature
        /// <summary>
        /// phần cho chọn thêm chữ ký
        /// edit by thaoht 20090603
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btBrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "JPEG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|Bitmap Files (*.bmp)|*.bmp";
            dialog.FilterIndex = 1;
            dialog.RestoreDirectory = true;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (this.MyImage != null)
                {
                    this.MyImage.Dispose();
                }
                this.MyImage = new Bitmap(dialog.FileName);
                this.picSignature.Image = this.MyImage;
                this.MyImage = null;
            }
        }

        public bool ThumbnailCallback()
        {
            return false;
        }
        #endregion
    }
}